﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data.SqlClient;
using DAL;
using BOL;
using UtilityExtensions;
using System.Configuration;
using System.IO;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Website.Logger;

using BOL.UI;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;
using MapControl;

namespace UILGestion.Mapa.Main.VentaAdmin
{
    public partial class ProyectoPanel : System.Web.UI.UserControl
    {
        public int GetIDUI()
        {
            return idUI.Value.ToInt();
        }



        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.usa_image.Click += new MapControl.ImageMapClickEventHandler(this.ImageMap_OnClick);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion



        protected void Page_Load(object sender, EventArgs e)
        {
            if(!this.IsPostBack)
            {

                
                //botonesPNL.Visible = false;
                //LoadMapaProyecto();
            }
            
          

        }
        public void HideButon()
        {
            proformarBTN.Visible = false;
            ventaBTN.Visible = false;
        }
        public void LoadMapaProyecto()
        {
            var id = "54";// (string)Request.QueryString["idProyecto"];
            var Proyecto = DbUtil.Db.Proyectos.Single(p => p.idInternal == id.ToInt());
            //proyectoLBTN.Text = Proyecto.descripcion;
            usa_image.Areas.Clear();
            usa_image.ImageUrl = "../../../Admin/ImagenSetForm.aspx?id={0}&type=Proyecto".Fmt(Proyecto.idArchivo);
            usa_image.Width = Unit.Parse(Proyecto.ancho.ToString());
            usa_image.Height = Unit.Parse(Proyecto.alto.ToString());
            usa_image.CssClass = "map maphilighted";

            foreach (var item in Proyecto.Etapas)
            {


                ImageMapPolygonArea etapas = new ImageMapPolygonArea();

                etapas.ToolTip = item.descripcion;
                etapas.HRef = null;// string.Format("#", item.idInternal.ToString());
                // etapas.Attributes.Add("class", "map maphilighted");
                etapas.Points = (item.mapCordenada == null) ? "" : item.mapCordenada;

                usa_image.Areas.Add(etapas);

            }

            datosPNL.Visible = false;
            modeloPNL.Visible = false;
            botonesPNL.Visible = false;

        }
        private void LoadMapaEtapa(int idEtapa)
        {
            var etapa = DbUtil.Db.Etapas.SingleOrDefault(p => p.idInternal == idEtapa);
            etapaLBTN.Text = etapa.descripcion;
            idEtapaSeleccion.Value = etapa.idInternal.ToString();

            usa_image.Areas.Clear();
            usa_image.ImageUrl = "../../../Admin/ImagenSetForm.aspx?id={0}&type=Etapa".Fmt(etapa.idArchivo);
            usa_image.Width = Unit.Parse(etapa.ancho.ToString());
            usa_image.Height = Unit.Parse(etapa.alto.ToString());

            datosPNL.Visible = true;
            modeloPNL.Visible = true;
            botonesPNL.Visible = true;

            foreach (var item in etapa.UIs)
            {
                ImageMapPolygonArea uis = new ImageMapPolygonArea();

                uis.Attributes.Add("full", item.idInternal.ToString());
                uis.Attributes.Add("state", "vendido");
                uis.ToolTip = item.descripcion;
                uis.HRef = string.Format("#UI:{0}", item.idInternal.ToString());
                uis.Points = item.mapCordenada == null ? "" : item.mapCordenada;
                usa_image.Areas.Add(uis);

            }
            foreach (var item in etapa.UILocalizacions)
            {
                ImageMapPolygonArea uis = new ImageMapPolygonArea();

                uis.ToolTip = item.descripcion;
                uis.HRef = string.Format("#L:{0}", item.idInternal.ToString());
                uis.Points = item.mapCordenada == null ? "" : item.mapCordenada;

                usa_image.Areas.Add(uis);

            }



        }

        private void LoadDepartamentos(int idTorre)
        {
            var torre = DbUtil.Db.UILocalizacions.SingleOrDefault(p => p.idInternal == idTorre);
            //departamento.Rows.Clear();
            //departamento.Caption=torre.descripcion;

            usa_image.Areas.Clear();
            usa_image.ImageUrl = "../../../Admin/ImagenSetForm.aspx?id={0}&type=Localizacion".Fmt(torre.idArchivo);
            usa_image.Width = Unit.Parse(torre.ancho.ToString());
            usa_image.Height = Unit.Parse(torre.alto.ToString());


            foreach (var item in torre.UIs)
            {
                ImageMapRectangleArea uis = new ImageMapRectangleArea();

                uis.Attributes.Add("full", item.idInternal.ToString());
                uis.Attributes.Add("state", "vendido");
                uis.HRef = string.Format("#UI:{0}", item.idInternal.ToString());
                uis.Rectangle = item.mapCordenada == null ? "" : item.mapCordenada;
                //para el caso de ser recta
                //string[] cordenas=item.mapCordenada==null?"".Split(','):item.mapCordenada.Split(',');
                //if (cordenas.Length == 4)
                //{
                //    uis.Top = cordenas[0].ToInt();
                //    uis.Left = cordenas[1].ToInt();
                //    uis.Bottom = cordenas[2].ToInt();
                //    uis.Right = cordenas[3].ToInt();
                //}
                uis.ToolTip = string.Format("{0} ({1})", item.descripcion, item.EstadoItem.descripcion);

                usa_image.Areas.Add(uis);



            }

            datosPNL.Visible = true;
            modeloPNL.Visible = true;
            botonesPNL.Visible = true;
        }

        protected void ImageMap_OnClick(object sender, MapControl.ImageMapClickEventArgs args)
        {
            // si biene de proyecto

            //ImageMapArea area = usa_image.Areas[args.AreaIndex];
            int x = args.X;
            int y = args.Y;



            //switch (imagen[0])
            //    {
            //        case "P":
            //        LoadMapaProyecto();
            //        break;
            //        case "E":
            //        LoadMapaEtapa(imagen[1].ToInt());
            //        break;
            //        case "L":
            //        LoadDepartamentos(imagen[1].ToInt());
            //        break;
            //        case "UI":
            //        loadUI(imagen[1].ToInt());
            //        break;

            //        default:
            //         break;
            //    }

        }
        private void loadUI(int idUI)
        {
            var ui = DbUtil.Db.UIs.SingleOrDefault(p => p.idInternal == idUI);
            this.idUI.Value = idUI.ToString();
            tipoUILBL.Text = ui.UITipo.descripcion;
            codigoLBL.Text = ui.codigo;
            localizacionLBL.Text = ui.UILocalizacion.descripcion;
            bloqueLBL.Text = ui.UIBloque.descripcion;
            estadoLBL.Text = ui.EstadoItem.descripcion;
            modeloLBL.Text = ui.UIModeloTipo.descripcion;
            areaLBL.Text = string.Format("Area:{0} /Techada:{1} /Ocupada{2}", ui.areaTerreno, ui.areaTechada, ui.areaOcupada);
            precioLBL.Text = string.Format("{0}{1:N}", ui.Moneda.simbol, ui.precio);
            datosPNL.Visible = true;
            // carga IMG

            modeloIMG.ImageUrl = "~/Admin/ImagenSetForm.aspx?id={0}&type=Modelo".Fmt(ui.UIModeloTipo.idArchivo);
            modeloPNL.Visible = true;
            botonesPNL.Visible = true;
        }

        protected void LBTN_Click(object sender, EventArgs e)
        {
            try
            {
                if (((LinkButton)sender).ID == proyectoLBTN.ID)
                {
                    LoadMapaProyecto();
                }
                if (((LinkButton)sender).ID == etapaLBTN.ID)
                {
                    LoadMapaEtapa(idEtapaSeleccion.Value.ToInt());
                }

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        protected void BTN_Click(object sender, EventArgs e)
        {
            if (idUI.Value.ToInt() != 0)
            {
                var idProyecto = (string)Request.QueryString["idProyecto"];
                if (((Button)sender).ID == proformarBTN.ID)
                {
                    Response.Redirect("~/VentaAdmin/Proforma/ProformaEditForm.aspx?type=A&idUI={0}&idProyecto={1}".Fmt(idUI.Value, idProyecto), true);
                }
                if (((Button)sender).ID == ventaBTN.ID)
                {
                    Response.Redirect("~/VentaAdmin/OrdenVenta/OrdenVentaEditForm.aspx?type=A&idUI={0}&idProyecto={1}".Fmt(idUI.Value, idProyecto), true);
                }
            }

        }

      
    }
}